home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / c / AmiVoGL_MDEV.lha / examples / loc.c < prev    next >
C/C++ Source or Header  |  1994-07-15  |  1KB  |  82 lines

  1. #include <stdio.h>
  2.  
  3. #ifdef SGI
  4. #include "gl.h"
  5. #include "device.h"
  6. #include "hershey.h"
  7. #else
  8. #include "vogl.h"
  9. #include "vodevice.h"
  10. #endif
  11.  
  12. /*
  13.  * a routine to demonstrate using locator.
  14.  */
  15. int main(void)
  16. {
  17.     int        i, bt, act, nchars;
  18.     short        data;
  19.     Scoord        x, y, sx, sy;
  20.     Screencoord    minx, maxx, miny, maxy;
  21.  
  22.     ginit();
  23.  
  24.     color(BLACK);
  25.     clear();
  26.  
  27.     color(BLUE);
  28.  
  29.     getviewport(&minx, &maxx, &miny, &maxy);
  30.  
  31.     ortho2((Coord)minx, (Coord)maxx, (Coord)miny, (Coord)maxy);
  32.  
  33.     /*
  34.      * draw some axes
  35.      */
  36.     move2s((Scoord)minx, (Scoord)((maxy - miny) / 2));
  37.     draw2s((Scoord)maxx, (Scoord)((maxy - miny) / 2));
  38.  
  39.     move2s((Scoord)((maxx - minx) / 2), (Scoord)miny);
  40.     draw2s((Scoord)((maxx - minx) / 2), (Scoord)maxy);
  41.  
  42.     color(GREEN);
  43.  
  44.     /*
  45.      * enable the left and middle mouse buttons
  46.      */
  47.     unqdevice(INPUTCHANGE);
  48.     qdevice(LEFTMOUSE);
  49.     qdevice(MIDDLEMOUSE);
  50.  
  51.     act = 0;
  52.  
  53.     /*
  54.      * getvaluator tells us the valuator's value. In
  55.      * this case it's the X and Y positions of the mouse.
  56.      * Note: these come back to us in screen coordinates.
  57.      */
  58.     while((bt = qread(&data)) != MIDDLEMOUSE) {
  59.         sx = getvaluator(MOUSEX);
  60.         sy = getvaluator(MOUSEY);
  61.         if (bt == -1) {
  62.             gexit();
  63.             printf("No locator device found\n");
  64.             exit(0);
  65.         } else {
  66.             if (act) {
  67.                 act = 0;
  68.                 move2s(sx, sy);
  69.                 draw2s(x, y);
  70.             } else {
  71.                 act = 1;
  72.                 x = sx;
  73.                 y = sy;
  74.             }
  75.         }
  76.         (void)qread(&data);    /* swallow the up event */
  77.     }
  78.  
  79.     gexit();
  80.  
  81. }
  82.